package co.edu.usbcali.unidades.dataaccess.daoFactory;

import co.edu.usbcali.unidades.dataaccess.dao.*;


/**
 * Factory for Data Access Objects Strategy The DAO pattern can be made highly flexible
 * by adopting the Abstract Factory [GoF] and the Factory Method [GoF] patterns.
 * When the underlying storage is not subject to change from one implementation to another,
 * this strategy can be implemented using the Factory Method pattern to produce a number of DAOs needed by the application.
 * This class is a Factory Method pattern
 *
 * @author Zathura Code Generator http://code.google.com/p/zathura
 */
public class XMLHibernateDaoFactory {
    private static XMLHibernateDaoFactory instance = null;

    private XMLHibernateDaoFactory() {
    }

    /**
    *
    * @return HibernateDaoFactory
    */
    public static XMLHibernateDaoFactory getInstance() {
        if (instance == null) {
            instance = new XMLHibernateDaoFactory();
        }

        return instance;
    }

    /**
    * This method instantiates the IAdministradorDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IAdministradorDAO implementation
    */
    public IAdministradorDAO getAdministradorDAO() {
        return new AdministradorDAO();
    }

    /**
    * This method instantiates the IAutorizacionDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IAutorizacionDAO implementation
    */
    public IAutorizacionDAO getAutorizacionDAO() {
        return new AutorizacionDAO();
    }

    /**
    * This method instantiates the ICiudadDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ICiudadDAO implementation
    */
    public ICiudadDAO getCiudadDAO() {
        return new CiudadDAO();
    }

    /**
    * This method instantiates the IConceptoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IConceptoDAO implementation
    */
    public IConceptoDAO getConceptoDAO() {
        return new ConceptoDAO();
    }

    /**
    * This method instantiates the ICorrespondenciaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ICorrespondenciaDAO implementation
    */
    public ICorrespondenciaDAO getCorrespondenciaDAO() {
        return new CorrespondenciaDAO();
    }

    /**
    * This method instantiates the ICuentaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ICuentaDAO implementation
    */
    public ICuentaDAO getCuentaDAO() {
        return new CuentaDAO();
    }

    /**
    * This method instantiates the IDetalleCorrespondenciaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IDetalleCorrespondenciaDAO implementation
    */
    public IDetalleCorrespondenciaDAO getDetalleCorrespondenciaDAO() {
        return new DetalleCorrespondenciaDAO();
    }

    /**
    * This method instantiates the IDetalleFacturaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IDetalleFacturaDAO implementation
    */
    public IDetalleFacturaDAO getDetalleFacturaDAO() {
        return new DetalleFacturaDAO();
    }

    /**
    * This method instantiates the IDivisionDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IDivisionDAO implementation
    */
    public IDivisionDAO getDivisionDAO() {
        return new DivisionDAO();
    }

    /**
    * This method instantiates the IEstadoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IEstadoDAO implementation
    */
    public IEstadoDAO getEstadoDAO() {
        return new EstadoDAO();
    }

    /**
    * This method instantiates the IFacturaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IFacturaDAO implementation
    */
    public IFacturaDAO getFacturaDAO() {
        return new FacturaDAO();
    }

    /**
    * This method instantiates the IGrupoFamiliarDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IGrupoFamiliarDAO implementation
    */
    public IGrupoFamiliarDAO getGrupoFamiliarDAO() {
        return new GrupoFamiliarDAO();
    }

    /**
    * This method instantiates the IInmuebleDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IInmuebleDAO implementation
    */
    public IInmuebleDAO getInmuebleDAO() {
        return new InmuebleDAO();
    }

    /**
    * This method instantiates the IMovMesInmuebleDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IMovMesInmuebleDAO implementation
    */
    public IMovMesInmuebleDAO getMovMesInmuebleDAO() {
        return new MovMesInmuebleDAO();
    }

    /**
    * This method instantiates the IMultaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IMultaDAO implementation
    */
    public IMultaDAO getMultaDAO() {
        return new MultaDAO();
    }

    /**
    * This method instantiates the IPaisDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IPaisDAO implementation
    */
    public IPaisDAO getPaisDAO() {
        return new PaisDAO();
    }

    /**
    * This method instantiates the IPersonaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IPersonaDAO implementation
    */
    public IPersonaDAO getPersonaDAO() {
        return new PersonaDAO();
    }

    /**
    * This method instantiates the IPresupuestoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IPresupuestoDAO implementation
    */
    public IPresupuestoDAO getPresupuestoDAO() {
        return new PresupuestoDAO();
    }

    /**
    * This method instantiates the IPropietarioInmuebleDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IPropietarioInmuebleDAO implementation
    */
    public IPropietarioInmuebleDAO getPropietarioInmuebleDAO() {
        return new PropietarioInmuebleDAO();
    }

    /**
    * This method instantiates the IRecepcionDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRecepcionDAO implementation
    */
    public IRecepcionDAO getRecepcionDAO() {
        return new RecepcionDAO();
    }

    /**
    * This method instantiates the IReservaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IReservaDAO implementation
    */
    public IReservaDAO getReservaDAO() {
        return new ReservaDAO();
    }

    /**
    * This method instantiates the IRubroDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRubroDAO implementation
    */
    public IRubroDAO getRubroDAO() {
        return new RubroDAO();
    }

    /**
    * This method instantiates the ITipoCategoriaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ITipoCategoriaDAO implementation
    */
    public ITipoCategoriaDAO getTipoCategoriaDAO() {
        return new TipoCategoriaDAO();
    }

    /**
    * This method instantiates the ITipoConceptoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ITipoConceptoDAO implementation
    */
    public ITipoConceptoDAO getTipoConceptoDAO() {
        return new TipoConceptoDAO();
    }

    /**
    * This method instantiates the ITipoCorrespondenciaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ITipoCorrespondenciaDAO implementation
    */
    public ITipoCorrespondenciaDAO getTipoCorrespondenciaDAO() {
        return new TipoCorrespondenciaDAO();
    }

    /**
    * This method instantiates the ITipoDocumentoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ITipoDocumentoDAO implementation
    */
    public ITipoDocumentoDAO getTipoDocumentoDAO() {
        return new TipoDocumentoDAO();
    }

    /**
    * This method instantiates the ITipoPersonaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ITipoPersonaDAO implementation
    */
    public ITipoPersonaDAO getTipoPersonaDAO() {
        return new TipoPersonaDAO();
    }

    /**
    * This method instantiates the ITipoUsuarioDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ITipoUsuarioDAO implementation
    */
    public ITipoUsuarioDAO getTipoUsuarioDAO() {
        return new TipoUsuarioDAO();
    }

    /**
    * This method instantiates the ITipoVehiculoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ITipoVehiculoDAO implementation
    */
    public ITipoVehiculoDAO getTipoVehiculoDAO() {
        return new TipoVehiculoDAO();
    }

    /**
    * This method instantiates the ITipoZonaComunDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ITipoZonaComunDAO implementation
    */
    public ITipoZonaComunDAO getTipoZonaComunDAO() {
        return new TipoZonaComunDAO();
    }

    /**
    * This method instantiates the ITipoZonaExtraDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ITipoZonaExtraDAO implementation
    */
    public ITipoZonaExtraDAO getTipoZonaExtraDAO() {
        return new TipoZonaExtraDAO();
    }

    /**
    * This method instantiates the IUnidadResidencialDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IUnidadResidencialDAO implementation
    */
    public IUnidadResidencialDAO getUnidadResidencialDAO() {
        return new UnidadResidencialDAO();
    }

    /**
    * This method instantiates the IUsuarioDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IUsuarioDAO implementation
    */
    public IUsuarioDAO getUsuarioDAO() {
        return new UsuarioDAO();
    }

    /**
    * This method instantiates the IVehiculoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IVehiculoDAO implementation
    */
    public IVehiculoDAO getVehiculoDAO() {
        return new VehiculoDAO();
    }

    /**
    * This method instantiates the IZonaComunDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IZonaComunDAO implementation
    */
    public IZonaComunDAO getZonaComunDAO() {
        return new ZonaComunDAO();
    }

    /**
    * This method instantiates the IZonaExtraDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IZonaExtraDAO implementation
    */
    public IZonaExtraDAO getZonaExtraDAO() {
        return new ZonaExtraDAO();
    }
}
